package maps.com.wsfk.ssm.client;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.wsfk.ssm.entity.BookInfo;
import com.wsfk.ssm.entity.HandBook;
import com.wsfk.ssm.entity.User;


/**
 * 
 * @author zhangbao
 *	这里是客户端接口的mapper
 */

public interface ClientMapper {

	/**根据下载码查询手册下载信息
	 * 
	 * status = published发布的
	 * 
	 * @param downloadNum
	 * @return
	 */
	public List<BookInfo> queryHandBookByDownloadNum(@Param(value="downloadNum")String downloadNum);
	
	/**
	 * 用于注册接口
	 * @param user
	 * @return
	 */
	public int addUser(User user);
	/**
	 * 验证用户是否存在
	 * @param userName
	 * @return
	 */
	public int queryUserByUserName(@Param(value="userName")String userName);
	
	/**
	 * 登录接口
	 * @param userName
	 * @param pwd
	 * @return
	 */
	public User queryUserByUserNameAndPwd(@Param(value="userName")String userName,
										 @Param(value="pwd")String pwd);
	
	/**
	 * 创建手册
	 * @param handbooks
	 * @return
	 */
	public int insertBooks(HandBook book);
	/**
	 * 更新handbook
	 * @param book
	 * @return
	 */
	public int updateBook(HandBook book);
	
	/**	
	 * 根据用户名密码查询手册列表
	 * @param userName
	 * @param pwd
	 * @return
	 */
	public List<BookInfo> queryBookInfos(@Param(value="userName")String userName,
										 @Param(value="pwd")String pwd);
	
	/**
	 * 根据版本号 查询手册信息
	 * @param userName
	 * @param pwd
	 * @param version !=version
	 * @param downnum
	 * @return
	 */
	public BookInfo queryBookInfo(@Param(value="userName")String userName,
			   					  @Param(value="pwd")String pwd,
			   					  @Param(value="version")String version,
			   					  @Param(value="downnum")String downnum);
	
	
	/**
	 * 更新手册发布状态
	 * @param userName
	 * @param pwd
	 * @param publishState
	 * @param publishDate
	 * @param stopDate
	 * @param downnum
	 * @return
	 */
	public int updatePublishState(Map<String, Object> param);
	
	/**
	 * 更新二维码
	 * @param userName
	 * @param pwd
	 * @param towCode
	 * @param downnum
	 * @return
	 */
	public int updateTowCodePath(@Param(value="userName")String userName,
			  					 @Param(value="pwd")String pwd,
			  					 @Param(value="towCode")String towCode,
			  					 @Param(value="downnum")String downnum);
	
	/**
	 * 根据下载码查询手册信息
	 * @param userName
	 * @param pwd
	 * @param downnum
	 * @return
	 */
	public BookInfo queryBookInfoDownnum(@Param(value="userName")String userName,
				  				  		 @Param(value="pwd")String pwd,
				  				  		 @Param(value="downnum")String downnum);
	/**
	 * 根据用户名和旧密码更新密码
	 * @param userName
	 * @param pwd
	 * @param newPwd
	 * @return
	 */
	public int updatePwd(@Param(value="userName") String userName,
						 @Param(value="pwd") String pwd,
						 @Param(value="newPwd") String newPwd);
	
	/**
	 * 查询是否存在下载码
	 * @param downnum
	 * @return
	 */
	public int queryCountsOfDownnum(@Param(value="downnum")String downnum);

	/**
	 *  
	 * 根据书的id查找到书
	 * @param bookid
	 * @return
	 */
	public HandBook queryBookById(@Param(value="bookid")String bookid);
	/**
	 *   
	 * 根据用户名，查找到用户
	 * @param username
	 * @return
	 */
	public User getUserByName(@Param(value="userName")String userName);
	
}
